{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "867e01aa-68b6-4428-8677-88ee23306a41",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[3.33333333e-01 5.00000000e-01 1.66666667e-01 3.97056586e-17]\n",
      "0.33333333 + 0.5 P_1(x) + 0.16666667 P_2(x) + (3.97056586e-17) P_3(x)\n"
     ]
    },
    {
     "data": {
      "image/png": "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gFi7dq36sVKpFHPmzBGurq7CyspKdOvWrUSk/uTJE/H222+L2rVrixo1aogBAwaIxMTEajqqZ9LT08WoUaOEnZ2dsLOzE6NGjSoxHbP48QkhxKpVq0SNGjW0rnuSmJgounXrJmrXri0sLS1FgwYNxNSpU0usE1NdKnqMjx8/FsHBwcLZ2VlYWFiIevXqiXHjxpU4P4Z6DhMSErR+p4t+r6U+h8uWLRPe3t7C0tJStGvXTqO1aNy4caJ79+4a+aOjo0Xbtm2FpaWl8PHx0Rp0b9++XTRp0kRYWFiIpk2batw4q1tFjq979+5az9W4cePUecLDw0W9evWEpaWlcHZ2FsHBweLYsWPVeEQlVeQYFy1aJBo0aCCsra1FrVq1xEsvvST27dtX4j0N9RwKoWrtrVGjhvj222+1vp8+ncPCFqbSvnP6eg3KhCgY6UNERERkBLjODRERERkVBjdERERkVBjcEBERkVFhcENERERGhcENERERGRUGN0RERGRUGNwQERGRUWFwQ0REREaFwQ0REREZFQY3REREZFQY3BAREZFRYXBDRAbv/v37cHV1xWeffaZOO3nyJCwtLfHrr79KWDIikgI3ziQio7B//34MHjwYx44dQ9OmTdG2bVu88soriIiIkLpoRFTNGNwQkdF466238Ntvv6FDhw44f/48Tp8+DWtra6mLRUTVjMENERmNJ0+ewM/PD0lJSThz5gxatWoldZGISAIcc0NERuPGjRu4e/culEolbt26JXVxiEgibLkhIqOQm5uLjh07ok2bNmjatCkWL16MCxcuwMXFReqiEVE1Y3BDREbhvffew44dO3D+/HnY2toiKCgIdnZ22Lt3r9RFI6Jqxm4pIjJ40dHRiIiIwIYNG2Bvbw8zMzNs2LABR44cwYoVK6QuHhFVM7bcEBERkVFhyw0REREZFQY3REREZFQY3BAREZFRYXBDRERERoXBDRERERkVBjdERERkVBjcEBERkVFhcENERERGhcENERERGRUGN0RERGRUGNwQERGRUfl/AJuXTZ5I2iIAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "from numpy.polynomial.legendre import Legendre\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 给定的离散数据点\n",
    "x_data = np.linspace(-1,1,50)\n",
    "y_data = x_data ** 2  # 可以替换为任意数据\n",
    "\n",
    "# 将 x 映射到 [-1, 1]\n",
    "t_data = 2 * x_data - 1\n",
    "\n",
    "# 勒让德多项式阶数\n",
    "m = 3\n",
    "\n",
    "# 计算勒让德多项式的系数（使用最小二乘法）\n",
    "coeffs = np.polynomial.legendre.legfit(t_data, y_data, m)\n",
    "print(coeffs)\n",
    "\n",
    "# 构造逼近函数\n",
    "approx_func = Legendre(coeffs)\n",
    "print(approx_func)\n",
    "\n",
    "# 绘制结果\n",
    "t_plot = np.linspace(-1, 1, 100)\n",
    "x_plot = (t_plot + 1) / 2\n",
    "y_plot = approx_func(t_plot)\n",
    "\n",
    "plt.scatter(x_data, y_data, color='red', label='Data Points')\n",
    "plt.plot(x_plot, y_plot, label='Legendre Approximation')\n",
    "plt.xlabel('x')\n",
    "plt.ylabel('f(x)')\n",
    "plt.legend()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "eb3141bd-98d0-4182-8410-4ad1016c4466",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0a4c3987-e2c5-4da1-9799-bbf328ee0748",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4b69aea6-09aa-4a4d-8dd0-eb9c49b5d0b3",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
